/**
 * 
 */
package com.peycash.servicio.impl;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.peycash.dominio.Colonias;
import com.peycash.dominio.Municipios;
import com.peycash.persistencia.PersistenciaException;
import com.peycash.persistencia.dao.ColoniaDAO;
import com.peycash.servicio.ColoniaServicio;
import com.peycash.servicio.ServicioException;

/**
 * @author JAMARO
 * 
 */
@Service
public class ColoniaServicioImpl implements ColoniaServicio {

	@Autowired
	private ColoniaDAO daoColonia;

	@Override
	@Transactional
	public long saveColonia(String nombre, int idMunicipio, String cp) throws ServicioException{
		try{
			Colonias colonia = new Colonias();
			colonia.setCp(cp);
			colonia.setFechaModificacion(new Date());
			Municipios m = new Municipios();
			m.setIdMunicipio(idMunicipio);
			colonia.setMunicipios(m);
			colonia.setNombre(nombre);
			colonia.setUsuarioBd("PE");
			long pk = daoColonia.save(colonia);
			return pk;
		}catch (PersistenciaException e) {
			throw new ServicioException("Error en saveColonia:" + e.getMessage(),
					e);
		}
	}
	
	
	
	@Override
	@Transactional
	public long findIdColoniaByNombreAndCP(String nombre, String cp) throws ServicioException{
		try{
			long idColonia = daoColonia.findIdColoniaByNombreAndCP(nombre, cp);
			return idColonia;
		}catch (PersistenciaException e) {
			throw new ServicioException("Error en findIdColoniaByNombreAndCP:" + e.getMessage(),
					e);
		}
	}
	
	@Override
	@Transactional(readOnly=true)
	public boolean existsCP(String cp) throws ServicioException {
		try {
			boolean result = daoColonia.existsCP(cp);
			return result;
		} catch (PersistenciaException e) {
			throw new ServicioException("Error en existsCP:" + e.getMessage(),
					e);
		}
	}

	@Override
	@Transactional(readOnly=true)
	public int getIdMunicipio(String cp) throws ServicioException {
		try {
			int idMunicipio = daoColonia.getMunicipio(cp);
			return idMunicipio;
		} catch (PersistenciaException e) {
			throw new ServicioException("Error en existsCP:" + e.getMessage(),
					e);
		}
	}

	@Override
	@Transactional(readOnly=true)
	public List<Colonias> findByNombre(String nombre) throws ServicioException {
		try {
			List<Colonias> list = daoColonia.findByNombre(nombre);
			return list;
		} catch (PersistenciaException e) {
			throw new ServicioException("Error en findByNombre:"
					+ e.getMessage(), e);
		}
	}
	
	@Override
	@Transactional(readOnly=true)
	public List<String> findNombresCoincidencia(String nombre) throws ServicioException{
		try{
			List<String> list = daoColonia.findNombresCoincidencias(nombre);
			return list;
		}catch (PersistenciaException e) {
			throw new ServicioException("Error en findNombresCoincidencia:"
					+ e.getMessage(), e);
		}
	}

}
